package model;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 记录服务元信息（注册到注册中心）
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ServiceInfo {
    private String serviceName;// 服务名称
    private String serviceHost;// 服务主机
    private Integer servicePort;// 服务端口
    private String serviceVersion = "1.0";// 服务版本，默认为1.0
    private String serviceGroup = "default";// 服务分组

    /**
     * 获取该服务的键
     ** 
     * @return
     */
    public String getServiceKey() {
        return serviceName + ":" + serviceVersion;
    }

    /**
     * 获取服务注册节点的键
     * 
     * @return
     */
    public String getServiceNodeKey() {
        return getServiceKey() + "/" + serviceHost + ":" + servicePort;
    }

    /**
     * 获取调用地址（便于服务消费根据服务元信息拿到调用地址）
     */
    public String getAddress() {
        // 判断主机有没有http头，没有则加上，有则返回
        if (!StrUtil.contains(serviceHost, "http")) {
            return String.format("http://%s:%s", serviceHost, servicePort);
        }
        return String.format("%s:%s", serviceHost, servicePort);
    }
}
